<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
    </ul>
    <script>
        /**
         * 需求：点击任意一个li元素，将其他的变为 哈哈，将当前的变成 嘿嘿
         * 
         *  排他思想：
         *  1. 先把所有的都变成一样的
         *  2. 将当前那一个不一样，单独调整
         * 
         */
        var oLis = document.querySelectorAll('li');
        // 循环绑定单击事件
        for(var i = 0; i < oLis.length; i++){
            // 给每一个li增加一个自定义属性 index，值是当前的索引值
            oLis[i].index = i;
            oLis[i].onclick = function(){
                // 遍历所有的li，并且修改innerText属性为哈哈
                for(var j = 0; j < oLis.length; j++){
                    oLis[j].innerText = '哈哈哈';
                }
                // 将当前点击的那一个变成：嘿嘿
                //oLis[i].innerText = '嘿嘿'; // 因为循环发生在点击事件之前，i值已经是4了，通过i值无法获取当前点击的 li

                // 方式一：通过this 找到当前的元素
                //this.innerText = '嘿嘿';


                // 方式二：通过自定义属性，获取当前元素
                // this.index // 当前元素的索引值
                oLis[this.index].innerText = '嘿嘿';
            }
        }
    </script>
</body>
</html>